/**
 * 文件名：****.java
 * 版权：Copyright Lightkit All Rights Reserved.
 * 描述：*****
 */
package com.lightkits.wms.domain.saleticket;

import com.lightkits.common.db.entity.WmSaleTicketLine;
import com.lightkits.common.db.entity.event.BdEvent;
import com.lightkits.framework.common.model.CheckResult;
import com.lightkits.wms.dto.onhand.model.OnhandDTO;
import com.lightkits.wms.dto.saleticket.model.UpSaleTicketHeadDto;
import com.lightkits.wms.dto.saleticket.model.UpSaleTicketLineDto;
import com.lightkits.wms.dto.stocktransfer.model.SubStockViewDTO;
import com.lightkits.wms.dto.tagservice.model.CancelTagDto;
import com.lightkits.wms.dto.tagservice.model.TagViewDto;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * @author jing.wei@hand-china.com
 * @date 2019/7/1 11:05
 **/
@Component
public interface CreateChangeParams {
    /**
     * 创建现有量变更参数
     *
     * @param headDto   售货单头参数
     * @param eventId   事件Id(作为现有量变更得父事件)
     * @param requestId 请求
     * @param lineDtos  售货单行参数
     * @return List<OnhandDTO>
     */
    List<OnhandDTO> createOnhandParams(UpSaleTicketHeadDto headDto,
                                       Long eventId,
                                       Long requestId,
                                       List<UpSaleTicketLineDto> lineDtos);

    /**
     * 创建子库存转移参数
     *
     * @param headDTO   售货单头参数
     * @param eventId   事件Id(作为现有量变更得父事件)
     * @param requestId 请求
     * @param lineDTOS  售货单行参数
     * @return List<SubStockViewDTO>
     */
    List<SubStockViewDTO> createSubStockParam(UpSaleTicketHeadDto headDTO,
                                              Long eventId,
                                              Long requestId,
                                              List<UpSaleTicketLineDto> lineDTOS);

    /**
     * 创建取消状态条码信息
     *
     * @param lines 扫描订单行
     * @param event 事件
     * @param orgId 组织ID(转移的)
     * @return TagViewDto
     */
    List<TagViewDto> createTags(List<UpSaleTicketLineDto> lines,
                                BdEvent event,
                                String orgId);

    /**
     * @param lineDtos 售货单行
     * @param event    物料
     * @return CancelTagDto
     */
    List<CancelTagDto> createCancelTag(List<UpSaleTicketLineDto> lineDtos,
                                       BdEvent event);

    /**
     * @param lineDtos 售货单行
     * @param event    物料
     * @return CancelTagDto
     */
    List<CancelTagDto> createSimCancelTag(List<WmSaleTicketLine> lineDtos,
                                          BdEvent event);
}
